package com.xht.controller;

import com.xht.domain.ResponseResult;
import com.xht.domain.dto.UserChangeStatusDto;
import com.xht.domain.dto.UserDto;
import com.xht.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/system/user")
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * 显示 用户user信息 可以模糊查询和分页
     */
    @GetMapping("/list")
    public ResponseResult GetList(Integer pageNum, Integer pageSize, String userName, String phonenumber, String status) {
        return userService.GetList(pageNum, pageSize, userName, phonenumber, status);

    }

    /**
     * 新增用户
     * 需求:
     * 1/非空和已存在判断
     * 2/密码加密存储到数据库
     * 3/用户可以直接关联角色
     */
    @PostMapping
    public ResponseResult AddUser(@RequestBody UserDto userDto) {
        return userService.addUser(userDto);
    }

    /**
     * 逻辑删除用户
     */
    @DeleteMapping("/{id}")
    public ResponseResult DeleteUser(@PathVariable Integer id) {
        return userService.deleteUser(id);
    }

    /**
     * 编辑用户信息--1/回显 用户信息
     */
    @GetMapping("/{id}")
    public ResponseResult getUserInfoById(@PathVariable Integer id) {
        return userService.getUserInfoById(id);
    }

    /**
     * 编辑用户信息--2/更新user表和user_role表数据
     */
    @PutMapping
    public ResponseResult UpdateUser(@RequestBody UserDto userDto) {
        return userService.updateUser(userDto);
    }

    /**
     * 修改用户状态
     */
    @PutMapping("/changeStatus")
    public ResponseResult changeStatus(@RequestBody UserChangeStatusDto userChangeStatusDto) {
        return userService.changeStatus(userChangeStatusDto);
    }

}
